Форум программистов, компьютерный форум CyberForum.ru

Старший бит - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.74
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
10.07.2010, 23:45     Старший бит #1
Допустим число 4 представляю в двоичной системе счисления получается 0100.
В етом двоичном числе старший бит ет 3 бит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.07.2010, 23:56     Старший бит #2
по такой логике у любого ненулевого числа старший бит 1ца
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.07.2010, 00:20     Старший бит #3
ElvenDragon, старший - это который самый левый.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
11.07.2010, 00:55     Старший бит #4
ElvenDragon, начнем с того, какая разрядность системы? Так вот старший бит - это самый левый бит для данной разрядности(x16 - 16-ый, x64 - 64-ый). Если число со знаком, то для старший бит будет означать знак числа, 1 - отрицательное число, 0 - положительное число.
Считать старшим битом самую левую единицу - ошибочно, в противном случае в системе со знаком все числа будут или нулем, или отрицательными числами
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.07.2010, 05:10     Старший бит #5
Я всё-таки с CyBOSSeR соглашусь. Старший бит - это тот, что крайний слева. При чём независимо от разрядности, знаковости и ещё чего-нибудь. В моём представлении у компьютера логика лампочки - либо светит, либо нет. А инвертировать все биты, прибавлять к крайнему справа ещё один и называть такой вот фортель отрицательным числом - это людьми надумано. Значение -1 присвоенное переменной типа char машина запишет, как 0xff - то бишь все биты единичные, и старший, и младший, и те, что между ними...
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
11.07.2010, 09:34     Старший бит #6
easybudda, у нас есть x16 система. тип int. число 15 = 0000 0000 0000 1111.
Старший бит у нас какой? 0000 0000 0000 1111. Тот который выделен красным, или тот который выделен зеленым? Если красным, то тогда выражение "старший бит равен 1" говорит о том что у нас отрицательное число, причем это не всегда так.

да и кстати, почему в числе 15 старший байт(выделен синим) 0000 0000 0000 1111 может быть нулевым, а старший бит почему-то вдруг не может? Несправедливо, согласны?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2010, 11:44     Старший бит
Еще ссылки по теме:

C++ Бит реверс
Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. C++
C++ старший и младший полубайт

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
11.07.2010, 11:44     Старший бит #7
Цитата Сообщение от M128K145 Посмотреть сообщение
ElvenDragon, начнем с того, какая разрядность системы? Так вот старший бит - это самый левый бит для данной разрядности(x16 - 16-ый, x64 - 64-ый). Если число со знаком, то для старший бит будет означать знак числа, 1 - отрицательное число, 0 - положительное число.
Считать старшим битом самую левую единицу - ошибочно, в противном случае в системе со знаком все числа будут или нулем, или отрицательными числами
Именно так. Мы знаем, что считать можно до бесконечности, а потому при записи числа на листочке количество знаков может быть неограниченным. Понятие "старший" возникает только тогда, когда есть некоторое ограничение на количество записываемых символов (разрядов). Поэтому старший бит - это самый левый бит в записи N-битного числа, содержащей N разрядов (которые при необходимости слева добираются нулями). Просто глядя на число нельзя сказать, какой бит у него старший, нужно ещё знать, во сколько разрядов мы его хотим записать. Т.е. если мы число 128 записываем в переменную типа unsigned char (8 бит), то cтаршим битом будет единица, а если записываем в unsigned int (16 или 32 бита в зависимости от платформы), то старшим битом будет 0.

В случае знакового представления самый старший бит является знаковым (при условии что мы используем запись в дополнительном коде). И именно этот знаковый бит называют старшим (потому что больше нечего назвать этим термином). Вообще, старший бит - это крайний бит некоего абстрактного регистра (ограниченной длины) для хранения числа
Yandex
Объявления
11.07.2010, 11:44     Старший бит
Ответ Создать тему
Опции темы

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru