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

Тип char.Signed/unsigned.Отличие типов данных. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Контейнеры в Windows http://www.cyberforum.ru/cpp-beginners/thread48852.html
Привет.На лето в институте задавали как практику написать приложение с 2мя контейнерами.Мне попалось со списками.Так вот , условиям выбра во 2ой контейнер данных из 1го является - четность.А я убей не помню, как четные числа выводить...((Помогите плиз)
C++ Ошибка времени выполнения Я пишу проэкт в Visual Studia 2008 на C++. У меня есть несколько проблем. Во-первых, когда я собираю финальную версию (release) и запускаю не выполнение, то появляется ошибка: Unhandled exception at 0x00402330 in chtml.exe: 0xC0000005: Access violation reading location 0x00000000. вот в этом месте int main( int argv, char *argc ) { #if ! LINUX setlocale( LC_ALL, ".1251" ); #endif... http://www.cyberforum.ru/cpp-beginners/thread48827.html
C++ Массивы (С++)
Здраствуйте помогите решить задачку на С++, задача простая а обращаюсь к вам потомучто совсем не знаком с этим языком сформировать массив С из нечетных и массив К - из четных чисел последовательности N(m)={10, 8, 4, 3, 6, 15, 2}, m=7. заранее очень благодарен
подскажите мне соответствующую книгу C++
френды,вот в чем загвоздка я не люблю читать литературу с компа,например в форматах pdf или ещё хуже DJVU у меня просто не приспособлены для этого мозги...я люблю читать реальные книги на бумаге...это уже научно доказано,что такая литература лучше усваивается,нежели литература с компа я прочитал в бумажном варианте книгу Стивена Холзнера Самоучитель Visual c++.Учебный курс книга...
C++ Что означают параметры %d, %s, %f и т.д.? http://www.cyberforum.ru/cpp-beginners/thread48806.html
Появилась проблема с выводом переменных в MessageBox. В MSDN нарыл это: #include <stdio.h> int main( void ) { char buffer, s = "computer", c = 'l'; int i = 35, j; float fp = 1.7320534f;
C++ Задача "Кузнечик" Помогите решить в С++ задачу про цифрового кузнечика: имеется линейный массив из 20 чисел 1,2,3,4...20. По нём может прыгать кузнечик скачками по 2 и по 3 клетки. Нужно создать программку, которая считает сколько есть вариантов у кузнечика попасть из клетки 0 на клетку 20. Использовать цикл "for"... подробнее

Показать сообщение отдельно
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
06.11.2010, 22:45     Тип char.Signed/unsigned.Отличие типов данных.
Цитата Сообщение от RNT Посмотреть сообщение
Четыре бита, как ни крути, могут находиться лишь в 16 разных
состояниях. Но теперь этим состояниям соответствуют другие
числа. Любопытно, что за семеркой сразу следует –8(1000).
Далее идут –7(1001), -6(1010), -5(1011), и все кончается нулем.
Такой способ кодирования поначалу может показаться
странным, но на самом деле он очень удобен, потому что
позволяет заменить вычитание числа на прибавление такого же
числа, но с противоположным знаком. Например, 5 – 4 = 5+ (–
4)= 0101 + 1100=0001=1. На самом деле, при сложении чисел 5
(0101) и –4 (1100) получается 17, то есть в двоичной записи
10001. Но в нашей переменной всего 4 бита и старшая единица
вытесняется за ее пределы, остается только единица в
младшем разряде. Вот и получается, что 5 + (-4)=1.
Я бы не много уточнил у добавил, добавлять и вычитать лучше байтами, логическая структура легче вырисовывается, а именно из аналогии работы АЛУ, которое отбрасывает лишний бит не помещающийся в 8 регистр:
5 - 4 = 5 + (-4) ->
0000 0101 +
1111 1100 (дополнительный код для 4)
=
0000 0001

Добавлено через 35 минут
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
/* int vs char */
 
int main(){
    int i = 254;
    signed char sc = (char)i;
    unsigned char uc = (char)i;
    
    printf("i = %d; sc = %d; uc = %d\n", i, sc, uc);
    
    return(0);
}
Код
i = 254; sc = -2; uc = 254
Вот есть код:

C
1
2
3
4
5
6
7
signed char ch=255;
unsigned char uch=255;
int sig_i;
int unsig_i;
 
sig_i = ch;
unsig_i = uch;
возник вопрос какой и куда компилятор устанавливает признак, что для случая
sig_i это будет значение -1 (в двоичной форме .... 1111 1111 1111 1111 1111 1111 1111 1111), а для
unsig_i = 255 (0000 0000 0000 0000 0000 0000 1111 1111), то есть как он решает что в одном случае надо просто нули добавить слева, а в другом единицы?
 
Текущее время: 13:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru