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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.74
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
#1

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

10.07.2010, 23:45. Просмотров 10128. Ответов 6
Метки нет (Все метки)

Допустим число 4 представляю в двоичной системе счисления получается 0100.
В етом двоичном числе старший бит ет 3 бит?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2010, 23:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Старший бит (C++):

Бит 8, младший и старший бит (по книге) - C++
Добрый день. Вот читаю книгу, и не пойму элементарной на первый взгляд вещи. Как понять следующие предложения: 1) Если бит...

Удалить из каждого байта строки первый (старший) бит. - C++
Здравствуйте. Суть задачи в общем-то и отображена в названии задачи. Есть строка: unsigned char str; Необходимо в каждом...

Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. - C++
Помогите пожалуйста, вообще не могу понять как делать следующее...Еще и в программе CODE BLOCKS препод почему именно эту программу...

переход с 32 бит на 64 бит - C++
Здравствуйте. Пробую на builder 10 перевести проект с 32 на 64 бит. Возникают странные ошибки: template <typename T> class DOT { ...

Низшие и старший разряды - C++
Название Размерность Тип A 5 вх B 5 вх C 1 вх ...

Считать старший байт числа - C++
Добрый день подскажите пожалуйста! Как в переменную записать число 3 числа 35, или 6 числа 69?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.07.2010, 23:56 #2
по такой логике у любого ненулевого числа старший бит 1ца
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.07.2010, 00:20 #3
ElvenDragon, старший - это который самый левый.
1
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.07.2010, 00:55 #4
ElvenDragon, начнем с того, какая разрядность системы? Так вот старший бит - это самый левый бит для данной разрядности(x16 - 16-ый, x64 - 64-ый). Если число со знаком, то для старший бит будет означать знак числа, 1 - отрицательное число, 0 - положительное число.
Считать старшим битом самую левую единицу - ошибочно, в противном случае в системе со знаком все числа будут или нулем, или отрицательными числами
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
11.07.2010, 05:10 #5
Я всё-таки с CyBOSSeR соглашусь. Старший бит - это тот, что крайний слева. При чём независимо от разрядности, знаковости и ещё чего-нибудь. В моём представлении у компьютера логика лампочки - либо светит, либо нет. А инвертировать все биты, прибавлять к крайнему справа ещё один и называть такой вот фортель отрицательным числом - это людьми надумано. Значение -1 присвоенное переменной типа char машина запишет, как 0xff - то бишь все биты единичные, и старший, и младший, и те, что между ними...
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
11.07.2010, 09:34 #6
easybudda, у нас есть x16 система. тип int. число 15 = 0000 0000 0000 1111.
Старший бит у нас какой? 0000 0000 0000 1111. Тот который выделен красным, или тот который выделен зеленым? Если красным, то тогда выражение "старший бит равен 1" говорит о том что у нас отрицательное число, причем это не всегда так.

да и кстати, почему в числе 15 старший байт(выделен синим) 0000 0000 0000 1111 может быть нулевым, а старший бит почему-то вдруг не может? Несправедливо, согласны?
1
Evg
Эксперт CАвтор FAQ
17818 / 6028 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 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.

В случае знакового представления самый старший бит является знаковым (при условии что мы используем запись в дополнительном коде). И именно этот знаковый бит называют старшим (потому что больше нечего назвать этим термином). Вообще, старший бит - это крайний бит некоего абстрактного регистра (ограниченной длины) для хранения числа
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2010, 11:44
Привет! Вот еще темы с ответами:

Поменять местами старший и младший полубайты - C++
Как поменять старший и младший полубайт беззнакового короткого целого местами? конечно же используя битовые операции.. напишите прогу...

В числе 15 поменять местами младший и старший байты - C++
Здравствуйте всем объясните пожалуйста как например в числе 15 поменять местами младший и старший байты (Я Си изучаю только два дня) ...

N-значное число, вывести младший и старший разряд - C++
Составить программу. Дано n-значное число longint. Произвести с ним действия согласно варианту ( 17 ) Вывести только цифры самого...

Определить, что старший байт числа равен значению переменной с - C++
Вот такое задание.... Буду рада хотя бы алгоритму выполнения. Дана переменная char c. Напишите цикл для подсчета в заданном диапазоне...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.07.2010, 11:44
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru